package com.hmdp.service;

import com.hmdp.dto.Result;
import com.hmdp.entity.Shop;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 虎哥
 * @since 2021-12-22
 */
public interface IShopService extends IService<Shop> {

    /**
     * 根据id查询店铺信息，优先查redis，后查数据库，数据库查到后添加到redis
     * @param id 店铺id
     * @return
     */
    Result queryById(Long id);

    /**
     * 根据id更新店铺数据，在更新数据库的同时，删除redis中的数据，保证一致性
     * 增加事务注解保证操作原子性
     * @param shop
     * @return
     */
    Result updateInfoById(Shop shop);

    /**
     * 根据商铺类型分页查询商铺信息
     * @param typeId 商铺类型
     * @param current 页码
     * @param x 店铺坐标 仅根据店铺距离排序时，不为空
     * @param y 店铺坐标
     * @return 商铺列表
     */
    Result queryShopByType(Integer typeId, Integer current, Double x, Double y);

    /**
     * 新增店铺信息到数据库，同时新增店铺id到布隆过滤器
     * @param shop
     */
    void saveDatabaseAndBloom(Shop shop);
}
